package leetcodecompetition.D340;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class T6360 {
    public long[] distance(int[] nums) {
        Map<Integer, List<Integer>> map=new HashMap<>();
        long [] res=new long[nums.length];
        for (int i = 0; i <nums.length ; i++) {
            if (map.containsKey(nums[i])){
                map.get(nums[i]).add(i);
            }else {
                int finalI = i;
                map.put(nums[i],new ArrayList<Integer>(){{add(finalI);}});
            }
        }

        List<Integer> list;
        for(int key:map.keySet()){
            list=map.get(key);
            list.sort((a,b)->a-b);
            long sum=0;
            int size=list.size();
            for(int l:list){
                sum=sum+l;
            }
            long tmp_sum=0;
            for (int i = 0; i <list.size() ; i++) {
                long l=Long.parseLong(list.get(i).toString());
                tmp_sum+=l;
                res[(int)l]=(l*(i+1)-tmp_sum)+((sum-tmp_sum)-(size-1-i)*l);
            }

        }
        return res;

    }

    @Test
    public void test() {
        int[] ints = {1, 3, 1, 1, 2};
        System.out.println(distance(ints));
    }
}
